#pragma once
#include "Kind.hpp"
#include "Token.hpp"

#include "Node.hpp"
#include "Expression/Expression.hpp"
#include "Statement/Statement.hpp"

class CompilationUnitSyntax : public SyntaxNode
{
public:
    SharedStatement Statement;
    SharedToken EndOfFileToken;
    /* data */
public:
    CompilationUnitSyntax(SharedStatement statement, SharedToken endOfFileToken)
        : SyntaxNode(SyntaxKind::CompilationUnit, "CompilationUnit"), Statement(statement), EndOfFileToken(endOfFileToken){};
    ~CompilationUnitSyntax() = default;
};

typedef std::shared_ptr<CompilationUnitSyntax> SharedCompilationUnit;